#ifndef PLAYER_H
#define PLAYER_H

/*!
 * \file player.h
 * \brief Header of class CPlayer
 * \author Benjamin Toueg
 * \version 0.1
 */

#include "gamecharacter.h"
#include "trajectory.h"
#include "vector3.h"

/*! \class CPlayer
* \brief The class defines all the attributes of the human player.
*/
class CPlayer: public CGameCharacter
{
public:
    /*! \brief Default constructor */
    CPlayer(CGlobalManager* pGM);
    /*! \brief Destructor */
    ~CPlayer();
    void                addScore();
    void                animation();
    void                draw();
    const Vector3d&     getFocus() { return m_focus; }
    int                 getLifeCounter() { return m_life_counter; };
    int                 getScore() { return m_score; };
    void                initFocus() { m_focus = m_position.current; }
    void                playSound();
    void                setLifeCounter(const int& n) { m_life_counter = n; };
    void                setNote(const int& n) { m_note = n; };
    void                resurrect();
    void                triggerAction(eAction new_action);
    void                transformModel();

private:
    enum eDuration
    {
        REGULAR_JUMP = 300, /*!< duration of a jump in millisec */
    };
    Vector3d m_focus; /*!< where should be the center of the camera */
    TrajectoryCalculator<double>* m_focus_tracker_ptr; /*!< how to calculate the trajectory of the center of the camera */
    int m_life_counter;
    int m_score;
    int m_combo;
    int m_note;
};

inline void CPlayer::addScore()
{
//    m_score += n;
}

#endif //PLAYER_H
